package nrpc.client.skst;

import java.io.IOException;
import java.nio.channels.SocketChannel;
import java.util.function.Consumer;
import java.util.function.Function;

import nrpc.client.serst.ServiceNode;

/**
 * 连接管理策略
 */
public interface SocketStrategy {
	
//	/**
//	 * 
//	 * @param node
//	 * @param callback 过程中连接中断返回false
//	 * @return 成功为true，连接失败为false
//	 */
//	boolean getSocket(ServiceNode node , Function<? super SocketChannel, ? extends Boolean> callback);
	
	SocketChannel getChannel(ServiceNode node) throws IOException;
	
	void backChannel(ServiceNode node, SocketChannel channel);
	
	void disconnect(ServiceNode node);
	
//	SocketWrapper wrap(ServiceNode node);
//	
	
//	List<SocketWrapper> getSocketWrappers();
	
	void close();
	
}
